class Solution {
public:
int row[10],col[10],dg[20],udg[20];
int ans=0;
    int totalNQueens(int n) {
        auto dfs=[&](auto&& dfs,int r)
        {
            if(r==n) 
            {
                ++ans;
                return;
            }

            for(int c=0;c<n;++c)
            {
                if(!col[c]&&!dg[r+c]&&!udg[n-r+c])
                {
                    col[c]=dg[r+c]=udg[n-r+c]=true;
                    dfs(dfs,r+1);
                    col[c]=dg[r+c]=udg[n-r+c]=false;
                }
            }
        };
        dfs(dfs,0);
        return ans;
    }
};
